From: Marco Trevisan (TreviƱo) Date: Mon, 17 Jun 2019 10:31:48 +0000 (+0200) Subject: boxpointer: Trigger a relayout when setting position X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~845^2^2~141 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=cb4c0d32c060d0f5851327782f36aa60b2393153;p=gnome-shell.git boxpointer: Trigger a relayout when setting position Since the repositioning is now done during allocation, we can just queue a relayout when setting the boxpointer positioning via the source actor. As per this _relayout() and _updateFlip now needs to be called during allocation only and with an allocation box set. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/576 --- diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js index 2f4975a29..3c704d2d3 100644 --- a/js/ui/boxpointer.js +++ b/js/ui/boxpointer.js @@ -455,10 +455,6 @@ var BoxPointer = GObject.registerClass({ } setPosition(sourceActor, alignment) { - // We need to show it now to force an allocation, - // so that we can query the correct size. - this.show(); - if (!this._sourceActor || sourceActor != this._sourceActor) { if (this._sourceActorDestroyId) { this._sourceActor.disconnect(this._sourceActorDestroyId); @@ -474,13 +470,10 @@ var BoxPointer = GObject.registerClass({ }) } } - this._arrowAlignment = alignment; - if (!this._sourceActor) - return; + this._arrowAlignment = alignment; - this._reposition(); - this._updateFlip(); + this.queue_relayout(); } setSourceAlignment(alignment) { @@ -605,14 +598,8 @@ var BoxPointer = GObject.registerClass({ parent = parent.get_parent(); } - x = Math.floor(x); - y = Math.floor(y); - // Actually set the position - if (!allocationBox) - this.set_position(x, y); - else - allocationBox.set_origin(x, y); + allocationBox.set_origin(Math.floor(x), Math.floor(y)); } // @origin: Coordinate specifying middle of the arrow, along